package com.ls.fw.data.exp;


public class Where {
	
	private Compound where = null;

	
	public Where() {
		super();
	}

	public Where(Compound where) {
		super();
		this.where = where;
	}
	

	public Where(String conn) {
		super();
		if(conn.equalsIgnoreCase("and")){
			this.where = Compound.and();
		}else{
			this.where = Compound.or();
		}
	}
	/**
	 * or条件表达式
	 * @author ls
	 * 2014年12月17日上午9:50:23 
	 * @param expressions
	 * @return
	 */
	public static Where or(Expression... expressions){
		Compound w = Compound.or(expressions);
		return new Where(w);
	}
	
	
	/**
	 * and条件表达式
	 * @author ls
	 * 2014年12月17日上午9:50:36 
	 * @param expressions
	 * @return
	 */
	public static Where and(Expression... expressions){
		Compound w = Compound.and(expressions);
		return new Where(w);
	}

	
	/**
	 * 添加一个条件
	 * @author ls
	 * 2014年12月17日上午9:50:45 
	 * @param expression
	 * @return
	 */
	public Where add(Expression expression){
		this.where.add(expression);
		return this;
	}
	
	
	/**
	 * 是否存在条件
	 * @author ls
	 * 2014年12月17日上午9:50:53 
	 * @return
	 */
	public boolean hasCondition(){
		return (this.where==null||!this.where.hasCondition())?false:true;
	}
	
	/**
	 * @return the where
	 */
	public Compound getWhere() {
		return where;
	}

	/**
	 * @param where the where to set
	 */
	public void setWhere(Compound where) {
		this.where = where;
	}

	@Override
	public String toString() {
		return where!=null?where.toString():"";
	}
}
